gdk: Add a private method to get a server timestamp
authorMatthias Clasen <mclasen@redhat.com>
Fri, 17 Nov 2017 20:39:08 +0000 (15:39 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 17 Nov 2017 20:39:08 +0000 (15:39 -0500)
This is needed in the clipboard code. We don't make
it public, since that code is destined to eventually
live in gdk anyway.

gdk/broadway/gdkdisplay-broadway.c
gdk/gdk-private.h
gdk/gdkdisplay.c
gdk/gdkdisplayprivate.h
gdk/win32/gdkdisplay-win32.c
gdk/x11/gdkdisplay-x11.c

index 0d8dbc8b0498b2a4fba6f45c70aa0a62fa23837d..c5eede1a94515f967378c11132f22c544f9659f5 100644 (file)
@@ -317,6 +317,12 @@ gdk_broadway_display_get_setting (GdkDisplay *display,
   return FALSE;
 }
 
+static guint32
+gdk_broadway_display_get_last_seen_time (GdkDisplay *display)
+{
+  return _gdk_broadway_server_get_last_seen_time (GDK_BROADWAY_DISPLAY (display)->server);
+}
+
 static void
 gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
 {
@@ -364,4 +370,5 @@ gdk_broadway_display_class_init (GdkBroadwayDisplayClass * class)
   display_class->get_monitor = gdk_broadway_display_get_monitor;
   display_class->get_primary_monitor = gdk_broadway_display_get_primary_monitor;
   display_class->get_setting = gdk_broadway_display_get_setting;
+  display_class->get_last_seen_time = gdk_broadway_display_get_last_seen_time;
 }
index 14554643bf97d73bff5d1622a27cf2cc5f2f2f07..0c7ca6681f96ddb54de52859c08e5750da1661a1 100644 (file)
@@ -39,4 +39,6 @@ void            gdk_window_move_to_rect         (GdkWindow          *window,
 
 GObject *       gdk_event_get_user_data         (const GdkEvent *event);
 
+guint32         gdk_display_get_last_seen_time  (GdkDisplay *display);
+
 #endif /* __GDK__PRIVATE_H__ */
index dfe9e3e19909f81aa911706d399ed9cc44ceeebc..ae09c253398ecc847b7e369d3d29b08f72e9d86d 100644 (file)
@@ -2013,3 +2013,15 @@ gdk_display_setting_changed (GdkDisplay       *display,
 {
   g_signal_emit (display, signals[SETTING_CHANGED], 0, name);
 }
+
+guint32
+gdk_display_get_last_seen_time (GdkDisplay *display)
+{
+  g_return_val_if_fail (GDK_IS_DISPLAY (display), GDK_CURRENT_TIME);
+
+  if (GDK_DISPLAY_GET_CLASS (display)->get_last_seen_time)
+    return GDK_DISPLAY_GET_CLASS (display)->get_last_seen_time (display);
+
+  return GDK_CURRENT_TIME;
+}
+
index f2927ab6d015fbdc3da5471b56fca0923a285145..d35f4849f7ca493affeba2c97b758f87b062755f 100644 (file)
@@ -219,6 +219,7 @@ struct _GdkDisplayClass
   gboolean               (*get_setting)                (GdkDisplay     *display,
                                                         const char     *name,
                                                         GValue         *value);
+  guint32                (*get_last_seen_time)         (GdkDisplay     *display);
 
   /* Signals */
   void                   (*opened)                     (GdkDisplay     *display);
index b3b6013f339aa87b0152819cffa639a4d2134799..4643f1698b755e632357463464a379afa6568a04 100644 (file)
@@ -1208,6 +1208,12 @@ gdk_win32_display_get_setting (GdkDisplay  *display,
   return _gdk_win32_get_setting (name, value);
 }
 
+static guint32
+gdk_win32_display_get_last_seen_time (GdkDisplay *display)
+{
+  return GetMessageTime ();
+}
+
 static void
 gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
 {
@@ -1266,6 +1272,7 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
 #endif
 
   display_class->get_setting = gdk_win32_display_get_setting;
+  display_class->get_last_seen_time = gdk_win32_display_get_last_seen_time;
 
   _gdk_win32_windowing_init ();
 }
index a9d30fc61b4d7e48c4820aa36ab758dd77b7795a..4e022c635bae6cacfd8b02934dd614ab3510ba2b 100644 (file)
@@ -3158,6 +3158,12 @@ gdk_x11_display_get_toplevel_windows (GdkDisplay *display)
   return GDK_X11_DISPLAY (display)->toplevels;
 }
 
+static guint32
+gdk_x11_display_get_last_seen_time (GdkDisplay *display)
+{
+  return gdk_x11_get_server_time (GDK_X11_DISPLAY (display)->leader_gdk_window);
+}
+
 static void
 gdk_x11_display_class_init (GdkX11DisplayClass * class)
 {
@@ -3215,6 +3221,7 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
   display_class->get_monitor = gdk_x11_display_get_monitor;
   display_class->get_primary_monitor = gdk_x11_display_get_primary_monitor;
   display_class->get_setting = gdk_x11_display_get_setting;
+  display_class->get_last_seen_time = gdk_x11_display_get_last_seen_time;
 
   _gdk_x11_windowing_init ();
 }